#ifndef _TD_CREEP_FACTORY_H_
#define _TD_CREEP_FACTORY_H_


/************************************************************************/
/* Core																	*/
/************************************************************************/
#include "Core/Singleton.h"

/************************************************************************/
/* Game																	*/
/************************************************************************/
#include "Game/Tilemaps/TerrainTilemap.h"
#include "Game/Animations/AnimationSet.h"
#include "Game/waveinfo.h"

//Mario types
#include "Game/Game Objects/Marios/BaseMario.h"
#include "Game/Game Objects/Marios/NormalMario.h"
#include "Game/Game Objects/Marios/ImmuneMario.h"



using namespace std;
using namespace TD_Core;
using namespace TD_Resources;

namespace TD_Game {


	class MarioFactory : public Singleton<MarioFactory> {

	public:

		/************************************************************************/
		/* ctors and dtors					                                    */
		/************************************************************************/
		//Default constructor
		explicit MarioFactory();

		//Copy constructor
		explicit MarioFactory(const MarioFactory &rhs);

		//Assignment constructor
		MarioFactory& operator=(const MarioFactory &rhs);

		//Destructor
		~MarioFactory();
		
		
		static BaseMario * createStandardBaseMario(const WaveInfo &gWaveInfo, const Coord2D &startingPos, int pathDeviant, TerrainTilemap * const terrainTilemap);

	


	};

}
#endif